package com.superman.supermarket.client.utils;

import java.util.HashMap;
import java.util.Map;

import com.google.gwt.user.client.Window;
import com.superman.mvpframe.client.gin.XGinjector;
import com.superman.mvpframe.client.mvp.MyPlaceController;
import com.superman.mvpframe.client.utils.StringUtils;
import com.superman.supermarket.client.gin.ShopGinjector;
import com.superman.supermarket.client.mvp.MyPlaceFactory;

/**
 * 页面跳转工具类
 * 
 * @author superman
 * @version 2018年8月12日下午3:40:13
 */
public class ActivityJumpUrl {

	public static final String ALILAY_NOTIFY_URL = "out_trade_no";// 支付宝支付同步回调订单号的参数
	private static final MyPlaceFactory factory = ShopGinjector.INSTANCE.getMyPlaceFactory();

	private static final MyPlaceController placeController = XGinjector.INSTANCE.getMyPlaceController();
	public static final String WXLAY_NOTIFY_URL = "orderid";// 微信支付同步回调订单号的参数

	/**
	 * 获取支付同步通知返回的orderid
	 * 
	 * @author superman
	 * @version 2018年8月22日 上午9:35:48
	 * @return orderid
	 */
	public static String getPayNotifyOrderId() {
		String orderid = Window.Location.getParameter(WXLAY_NOTIFY_URL);
		if (StringUtils.isEmpty(orderid)) {
			orderid = Window.Location.getParameter(ALILAY_NOTIFY_URL);
		}
		return orderid;
	}

	/**
	 * 是否是支付同步通知进入的实例
	 * 
	 * @author superman
	 * @version 2018年8月22日 上午9:31:08
	 * @return true or false
	 */
	public static boolean isNotPayNotifyUrl() {
		// return StringUtils.isEmpty(Window.Location.getParameter(ALILAY_NOTIFY_URL))
		// && StringUtils.isEmpty(Window.Location.getParameter(WXLAY_NOTIFY_URL));

		return true;
	}

	/**
	 * 跳转到地址选择的页面
	 * 
	 * @author superman
	 * @version 2018年8月25日 上午9:58:16
	 * @param addrid
	 */
	public static void pushToAddressChoosePage(String addrid) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("addrid", addrid);
		placeController.push(factory.getAddressChoosePlace(), map);
	}

	/**
	 * 跳转到收银台
	 * 
	 * @author superman
	 * @version 2018年8月12日 下午3:40:18
	 * @param orderId
	 */
	public static void pushToCasherDeskPage(String orderId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("orderid", orderId);
		placeController.push(factory.getCasherDeskPlace(), map);
	}

	/**
	 * 跳转到分类下商品列表页面
	 * 
	 * @author superman
	 * @version 2018年8月14日 下午4:51:50
	 * @param cid
	 * @param cname
	 */
	public static void pushToCategorySkuListPage(String cid, String cname) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("cid", cid);
		map.put("cname", cname);
		placeController.push(factory.getCategorySkuListPlace(), map);
	}

	/**
	 * 跳转到商品评价列表页面
	 * 
	 * @author superman
	 * @version 2018年8月18日 下午5:04:05
	 * @param spuid
	 */
	public static void pushToCommentListaPage(String spuid) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("spuid", spuid);
		placeController.push(factory.getCommentListPlace(), map);
	}

	/**
	 * 调准到评价的页面
	 * 
	 * @author superman
	 * @version 2018年8月15日 下午10:48:40
	 * @param orderid
	 */
	public static void pushToCommentPage(String orderid) {

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("orderid", orderid);
		placeController.push(factory.getCommentPlace(), map);

	}

	/**
	 * 前往订单详情页面
	 * 
	 * @author superman
	 * @version 2018年8月12日 下午9:41:12
	 * @param orderId
	 */
	public static void pushToOrderDetailPage(String orderId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("orderid", orderId);
		placeController.push(factory.getOrderDetailPlace(), map);
	}

	/**
	 * 跳转到查看物流的页面
	 * 
	 * @author superman
	 * @version 2018年8月15日 下午9:26:34
	 * @param orderid
	 */
	public static void pushToOrderLogisticsPage(String orderid) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("orderid", orderid);
		placeController.push(factory.getOrderLogisticsPlace(), map);

	}

	/**
	 * 跳转到申请退货退款申请的页面
	 * 
	 * @author superman
	 * @version 2018年8月18日 下午10:40:44
	 * @param orderId
	 * @param skuID
	 */
	public static void pushToRefundApplicationPage(String orderId, String skuID) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("orderid", orderId);
		map.put("skuid", skuID);
		placeController.push(factory.getRefundApplicationPlace(), map);
	}

	/**
	 * 跳转到退款详情的页面
	 * 
	 * @author superman
	 * @version 2018年8月20日 下午9:45:08
	 * @param refundId
	 */
	public static void pushToRefundDetailPage(String refundId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("refundid", refundId);
		placeController.push(factory.getRefundDetailPlace(), map);
	}

	/**
	 * 跳转到退货的页面
	 * 
	 * @author superman
	 * @version 2018年8月21日 下午10:48:37
	 * @param refundId
	 */
	public static void pushToRefundGoodsPage(String refundId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("refundid", refundId);
		placeController.push(factory.getRefundGoodsPlace(), map);
	}

	/**
	 * 跳转到退货物流的页面
	 * 
	 * @author superman
	 * @version 2018年8月21日 下午10:48:37
	 * @param refundId
	 */
	public static void pushToRefundLogisticsPage(String refundId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("refundid", refundId);
		placeController.push(factory.getRefundLogisticsPlace(), map);
	}

	/**
	 * 跳转到退款申请修改页面
	 * 
	 * @author superman
	 * @version 2018年8月21日 上午12:12:00
	 * @param refundId
	 */
	public static void pushToRefundModifyPage(String refundId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("refundid", refundId);
		placeController.push(factory.getRefundModifyPlace(), map);
	}

	/**
	 * 跳转到退款流程的页面
	 * 
	 * @author superman
	 * @version 2018年8月20日 下午11:39:47
	 * @param refundId
	 */
	public static void pushToRefundProcessPage(String refundId) {

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("refundid", refundId);
		placeController.push(factory.getRefundProcessPlace(), map);

	}

	/**
	 * 跳转到商品详情
	 * 
	 * @author superman
	 * @version 2018年8月12日 下午3:40:15
	 * @param spuId
	 * @param prop
	 */
	public static void pushToSkuDetailPage(String spuId, String prop) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("spuid", spuId);
		if (!StringUtils.isEmpty(prop)) {
			map.put("prop", prop);
		}

		placeController.push(factory.getSkuPlace(), map);
	}

	/**
	 * 跳转到指定专区下商品列表
	 * 
	 * @author superman
	 * @version 2018年8月20日 下午10:02:09
	 * @param sid
	 * @param sname
	 */
	public static void pushToSpecialSkuListPage(String sid, String sname) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("sid", sid);
		map.put("sname", sname);
		placeController.push(factory.getSpecialSkuListPlace(), map);
	}

	/**
	 * 跳转到店铺优惠券列表页面
	 * 
	 * @author superman
	 * @version 2018年8月18日 下午10:53:37
	 * @param storeid
	 */
	public static void pushToStoreCouponListPage(String storeid) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("storeid", storeid);
		placeController.push(factory.getStoreCouponListPlace(), map);
	}

	/**
	 * 跳转到店铺页面
	 * 
	 * @author superman
	 * @version 2018年8月14日 下午10:43:47
	 * @param storeid
	 */
	public static void pushToStorePage(String storeid) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("storeid", storeid);
		placeController.push(factory.getStorePlace(), map);
	}
}
